package cn.hchaojie.camp.day07;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import org.junit.Test;

// Set
// Map

public class DemoList {
	@Test
	public void test() {
		// int[] array = new int[10];
		
		
		// int[] array2 = new int[11];
		
		// list用来存放元素 

		// 使用泛型来指定list容器里面元素的类型
		// List<Integer> list = new ArrayList<Integer>();		// 多态
		List<Integer> list = new ArrayList<>();		// 多态
		
		list.add(1);
		list.add(2);	// 动态扩容，往列表的后面添加
		
		list.add(0, 3);	// 插入第一位
		System.out.println(list);
		
		System.out.println(list.size());	// 里面有几个元素
		
		// array[0]
		System.out.println(list.get(0));
		
		list.remove(0);
		System.out.println(list);
		
		System.out.println(list.contains(2));
		
		// ArrayList list2 = new ArrayList();
	}
	
	@Test
	public void testRemove() {
//		List<String> list = Arrays.asList("java", "c++", "javascript");
//		
//		for (String s : list) {
//			System.out.println(s);
//		}
		
//		List<String> list = new ArrayList<>();
//		list.add("java");
//		list.add("c++");
//		list.add("javascript");
//
//		list.remove("java");
//		list.remove(new String("c++"));
//		list.remove(null);
//		
//		for (String item : list) {
//			System.out.println(item);
//		}
		
		List<Employee> list = new ArrayList<>();
		
		list.add(new Employee("java", 18));
		list.add(new Employee("c++", 28));
		list.add(new Employee("javascript", 18));
		
		list.remove(new Employee("javascript", 18));
		
		for (Employee e : list) {
			System.out.println(e);
		}
	}
	
	@Test
	public void testIterate() {
		List<String> list = new ArrayList<>();
		list.add("java");
		list.add("c++");
		list.add("javascript");
		// list.add(1);

		// 方式一
		for (int i = 0; i < list.size(); i++) {
			String str = list.get(i);
			System.out.println(str);
		}
		
		// 增强的for循环
		for (String s : list) {
			System.out.println(s);
		}
		
		// 迭代器模式
		Iterator<String> itr = list.iterator();
		while (itr.hasNext()) {
			String s = itr.next();
			
			System.out.println(s);
		}
		
		
		// 遍历的时候删除元素
//		for (String s : list) {
//			if (s.equals("java")) {
//				list.remove(s);	// 按照元素是否匹配来删除
//				// list.remove(0);
//			}
//		}
		
		// 使用迭代器模式来在遍历的时候删除元素
		itr = list.iterator();
		while (itr.hasNext()) {
			String s = itr.next();
			if (s.equals("java")) {
				itr.remove();		// 把当前迭代的元素删除
			}
			
			System.out.println(s);
		}
		
//		for (int i = 0; i < list.size(); i++) {
//			if (list.get(i).equals("javascript")) {
//				list.remove(i);
//			}
//		}
		
		System.out.println(list);
	}
}
